<meta charset="utf-8"/>
<?php

/*

第一部分:复习题

一:散列表（Hash table，也叫哈希表），是根据关键码值(Key value)
   而直接进行访问的数据结构。也就是说，它通过把关键码值映射到
   表中一个位置来访问记录，以加快查找的速度。这个映射函数叫做
   散列函数，存放记录的数组叫做散列表。

   给定表M，存在函数f(key)，对任意给定的关键字值key，代入函数
   后若能得到包含该关键字的记录在表中的地址，则称表M为哈希
   (Hash）表，函数f(key)为哈希(Hash) 函数。

   hash表示例:  {"年龄":"27","性别":"男","身高":"140"}


	1.阅读hash的定义,他跟PHP中何种数据类型类似,实现原理相同?

	2.有二维数组如下,工程师需要写一个类hash表供其他人调用,
	并存入redis缓存服务器中，以便快速通过姓名(name)获取年龄
	(age)。
	如：已知姓名为miao,则快速获取年龄为: $age = $info['miao'];
	$info = array(
		array('name'=>'miao','age'=>'3'),
		array('name'=>'wang','age'=>'13'),
		array('name'=>'jiji','age'=>'34'),
		array('name'=>'keke','age'=>'4')
	)


二.有一分数序列：2/1，3/2，5/3，8/5，13/8，21/13...求
   出这个数列的前20项之和。



三.求1+2!+3!+...+20!的和(阶乘)



新题目:

四.某个公司采用公用电话传递数据，数据是四位的整数，在传递过程
   中是加密的，加密规则如下： 每位数字都加上5,然后用和除以10
   的余代替该数字，再将第一位和第四位交换，第二位和第三位交换。
   请用声明一个函数来,传入一个明文字符串,返回一个加密后的字符
   串。


五.学习成绩>=90分的同学用A表示，80-89分之间的用B表示，
   60-79分用C表示,60分以下的用D表示。声明一个函数,输入
   一个分数,返回成绩。



*/



//答题一：

//答题1：array 数据类型


//答题2：
/*
   $info = array(
      array('name'=>'miao','age'=>'3'),
      array('name'=>'wang','age'=>'13'),
      array('name'=>'jiji','age'=>'34'),
      array('name'=>'keke','age'=>'4')
   );

   $new=array();

   foreach($info as $key=>$val){
 //   $key=$val['name']
      $new[$val['name']]=$val['age'];
      
   }

   echo $new['keke'];
*/
   
//答题二：有一分数序列：2/1，3/2，5/3，8/5，13/8，21/13...求
//        出这个数列的前20项之和。
/*
   $sum=0;
   $m=1;//分母
   $z=2;//分子
   for($i=1;$i<=20;$i++){
      $sum+=$z/$m;//求和       
      $z+=$m;     //分子加分母==下一个分子
      $m=$z;      //上一个分子==下一个分母
   }

   echo $sum;
*/


//答题三.求1+2!+3!+...+20!的和(阶乘)
/*
   $sum=0;
   $i=1;

   for($i=1;$i<=20;$i++){
         $sum1=1;

      for($j=1;$j<=$i;$j++){
         $sum1=$sum1*$j;    
      }
         $sum=$sum+$sum1;
   }

   echo $sum;
*/


/*
答题四.某个公司采用公用电话传递数据，数据是四位的整数，在传
       递过程中是加密的，加密规则如下： 每位数字都加上5,然后
       用和除以10的余代替该数字，再将第一位和第四位交换，第
       二位和第三位交换。请用声明一个函数来,传入一个明文字符
       串,返回一个加密后的字符串。
*/  
      
      // $a1 = 1;
      // $a2 = 2;
      // $a3 = 3;
      // $a4 = 4;

      // $a1 = ($a1+5)%10;
      // $a2 = ($a2+5)%10;
      // $a3 = ($a3+5)%10;
      // $a4 = ($a4+5)%10;

  
   $arr = array(1,2,3,4);
   for($i=0;$i<count($arr);$i++){
      $arr[$i] = ($arr[$i]+5)%10;
   }

   $new =$arr[3].$arr[2].$arr[1].$arr[0];
   echo $new;
   echo "<br>";

   $new2=array($arr[3],$arr[2],$arr[1],$arr[0]);
   print_r($new2);
  


   

/*答题五.学习成绩>=90分的同学用A表示，80-89分之间的用B
         表示，60-79分用C表示,60分以下的用D表示。声明一
         个函数,输入一个分数,返回成绩。
*/  
     // $score=45;
     // function a($score){
     //     if($score>=90){
     //          return "A";
     //     }elseif($score>80 && $score<89){
     //          return "B";
     //     }elseif($score>60 && $score<79){
     //          return "C";
     //     }else{
     //          return "D";
     //     }
     // }
   
     // $result = a($score);// a($score) == 'D'  ,
     
     // echo $result;

     
     
    
   